{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# pomegranate / libpgm comparison\n",
    "\n",
    "authors: Jacob Schreiber (jmschreiber91@gmail.com)\n",
    "\n",
    "<a href=\"https://github.com/CyberPoint/libpgm\">libpgm</a> is a python package for creating and using Bayesian networks. I was unable to figure out how to use libpgm to do inference properly without raising errors, but I was able to get structure learning working. libpgm uses constraints for structure learning, a process which is not probabilistic, but can be asymptoptically more efficient (between O(n^2) and O(n^3) as opposed to exponential). To my knowledge, they do not have exact structure learning implemented, likely due to the super-exponential nature of the naive algorithm.\n",
    "\n",
    "pomegranate has both the exact structure learning problem, and the Chow-Liu tree approximation, implemented. The exact structure learning problem uses an efficient dynamic programming solution to reduce the complexity from super-exponential to exponential in time with the number of variables. The Chow-Liu tree approximation finds the best tree which spans all variables.\n",
    "\n",
    "Lets compare the structure learning task in pomegranate versus the structure learning task in libpgm for different numbers of variables to compare these speed of the two packages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "import seaborn, time\n",
    "seaborn.set_style('whitegrid')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets first compare the two packages based on number of variables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from pomegranate import BayesianNetwork\n",
    "from libpgm.pgmlearner import PGMLearner\n",
    "\n",
    "libpgm_time = []\n",
    "pomegranate_time = []\n",
    "pomegranate_cl_time = []\n",
    "\n",
    "for i in range(2, 15):\n",
    "    tic = time.time()\n",
    "    X = numpy.random.randint(2, size=(10000, i))\n",
    "    model = BayesianNetwork.from_samples(X, algorithm='exact')\n",
    "    pomegranate_time.append(time.time() - tic)\n",
    "\n",
    "    tic = time.time()\n",
    "    model = BayesianNetwork.from_samples(X, algorithm='chow-liu')\n",
    "    pomegranate_cl_time.append(time.time() - tic)\n",
    "\n",
    "    X = [{j : X[i, j] for j in range(X.shape[1])} for i in range(X.shape[0])]\n",
    "    learner = PGMLearner()\n",
    "\n",
    "    tic = time.time()\n",
    "    model = learner.discrete_constraint_estimatestruct(X)\n",
    "    libpgm_time.append(time.time() - tic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ff6799c6890>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(14, 6))\n",
    "plt.title(\"Bayesian Network Structure Learning Time\", fontsize=16)\n",
    "plt.xlabel(\"Number of Variables\", fontsize=14)\n",
    "plt.ylabel(\"Time (s)\", fontsize=14)\n",
    "plt.plot(range(2, 15), libpgm_time, c='c', label=\"libpgm\")\n",
    "plt.plot(range(2, 15), pomegranate_time, c='m', label=\"pomegranate exact\")\n",
    "plt.plot(range(2, 15), pomegranate_cl_time, c='r', label=\"pomegranate chow liu\")\n",
    "plt.legend(loc=2, fontsize=14)\n",
    "plt.xticks(fontsize=14)\n",
    "plt.yticks(fontsize=14)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see many expected results from this graph. libpgm implements a quadratic time algorithm, and it appears that the growth is roughly quadratic. The exact algorithm in pomegranate is an exponential time algorithm, and so while it does have an efficient implementation that causes the it to be much faster than libpgm's algorithm for small numbers of variables, eventually it will become slower. Lastly, the chow-liu tree algorithm is far faster than both other algorithms because it is finding the best tree approximation. While it is a quadratic time algorithm, it is also a simpler one.\n",
    "\n",
    "Lets now compare the speed on different numbers of samples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "libpgm_time = []\n",
    "pomegranate_time = []\n",
    "pomegranate_cl_time = []\n",
    "\n",
    "x = 10, 25, 100, 250, 1000, 2500, 10000, 25000, 100000, 250000, 1000000\n",
    "for i in x:\n",
    "    tic = time.time()\n",
    "    X = numpy.random.randint(2, size=(i, 10))\n",
    "    model = BayesianNetwork.from_samples(X, algorithm='exact')\n",
    "    pomegranate_time.append(time.time() - tic)\n",
    "\n",
    "    tic = time.time()\n",
    "    model = BayesianNetwork.from_samples(X, algorithm='chow-liu')\n",
    "    pomegranate_cl_time.append(time.time() - tic)\n",
    "\n",
    "    X = [{j : X[i, j] for j in range(X.shape[1])} for i in range(X.shape[0])]\n",
    "    learner = PGMLearner()\n",
    "\n",
    "    tic = time.time()\n",
    "    model = learner.discrete_constraint_estimatestruct(X)\n",
    "    libpgm_time.append(time.time() - tic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\ntCy+XlxMbmJinCsUEZHd+gxnf/rTn7j99tuZPHkyP//5zykrKyM9Pb3XMW1tbaxfv54nnniC888/\nnx/84AecddZZg160iIiI9O+jjg6WOw4PVVdTHwziAs7NyaHCtjkrJwe32uCLiAw5fYazX/ziFzz8\n8MMcd9xxfd45LS2N6dOnM336dDZv3szNN9+scCYiIhInEWP4044dVDoOzzU0YIDchAT+a+xY5lsW\nR6akxLtEERHpR5/h7Nlnn+01lywSieB2u3u+3rJlC8XFxWRnZwNQWlra7wLSIiIiMjgagkEe8ftZ\n6jhs7ewE4KSMDCpsmzn5+SSrwYeIyLDQZzjbM5i9+uqr3Hzzzbz00kuEQiEuu+wy3nrrLbxeL7/8\n5S+ZPn36PvcRERGRwfV6czOVjsPK2lo6IxFS3G6uKipioW1TlpER7/JEROQgDahb4+LFi7n22msB\neO6559i+fTt//etfeeutt/jFL37RE85ERERkcHWEw/yutpYljsP6lhYAjkpJodyyuLKoiGw1+BAR\nGbYGFM4++ugjLrroIgBefPFFzjnnHCzLori4mO9973uDWqCIiIjAhx0dLHMcHvb72REK4QYuzM2l\n3Lb59+xsNfgQERkBBhTOkpOTaW5uJikpiVdeeYWf//znALS2tuLSLwMREZFBETaGPzY0sMRxWLNj\nBwD5iYncNm4c11gW45OT41yhiIhE04DC2fTp07niiivweDxkZ2czbdo0urq6uOuuuygrKxvsGkVE\nREaVukCAh/x+ljkO/+rqAuDUzEwqbJtZ+fkkdTfoEhGRkWVA4ey///u/efTRR2lpaeFrX/saLpeL\nSCRCXV0dP/rRjwa7RhERkRHPGMOr3Q0+nqitJWAMqW431xQXU27bTNprrVERERl5+gxn//d//9fT\n6CM5OZkFCxb02p+SksJDDz3Ua9tLL73EaaedNghlioiIjExt4TCP19RQ6Ti82doKwITUVMoti3lF\nRWQlDOhzVBERGQH6fMW/6667eP7551m4cCGWZfX7Q/x+P5WVlaxbt07hTEREZADeb29nqePwiN/P\nznAYDzArL48K22bGmDGa0y0iMgr1Gc6eeeYZ7rjjDs466yxOOeUUpk2bxjHHHENWVhYul4umpib+\n+c9/8uqrr/KPf/yDc845h6effjqWtYuIiAwroUiE1Q0NVDoOf2lsBKDI6+X6khKuLi6mRA0+RERG\n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\n09xzzz3xLkuGkPPPP9/cfPPNpq2tzTQ0NJgrrrjCzJ8/39TV1ZnJkyeblStXmq6uLvPGG2+YsrIy\n8/LLLxtjjPnb3/5mysrKTFVVlenq6jIrV640ZWVlpqGhwRhjzE9+8hMzc+ZM4/P5TEtLi7n11lvN\nxRdf3PO4/Z2btbW1/T62DH+bN282J510kpkwYYIx5sD/5jrf5FA9/vjj5swzzzQffPCBaW9vNz/7\n2c/Mt7/9bb3GSdSFQiHzhS98wfzsZz8zwWDQtLS0mOuuu85ceumlOt8kKv7whz+YL37xi2bRokXm\n9NNP79k+lM+vAz12X0ZkOHv77bdNaWmpaWpq6tm2Zs0aM3Xq1DhWJUNJc3Ozue2220xtbW3Ptuee\ne86UlZWZhx56yFxwwQW9jv/BD35gKioqjDHGzJ8/3/zwhz/stf+8884zv/rVr0woFDJTpkwxf/nL\nX3r2NTQ0mAkTJph33333gOfmgw8+2O9jy/AWiUTMxRdfbJYvX94Tzg70b67zTQ7VGWecYf7whz/s\ns12vcRJt27ZtMxMmTDAffvhhz7Y1a9aYyZMn63yTqHj66aeN3+83v/3tb3uFs6F8fvX32P0ZkcMa\nN2/eTFFREVlZWT3bSktLaW5u5pNPPoljZTJUZGRkcNddd5Gfn9+zzXEcCgsLeeeddygtLe11fGlp\nKRs3bgRg06ZNHHfccfvd/8knn9DS0tLr/jk5ORQVFbFx48YDnpubN2/u97FleHv88cdJSUnh3HPP\n7dl2oH9znW9yKGpqati+fTttbW2cf/75TJ06lQULFlBTU6PXOIk627aZMGECv/vd72hra6O1tZXn\nnnuO008/XeebRMWsWbMoKiraZ/tQPr/6e+z+jMhw1tTU1OsvEmDMmDEYY2hsbIxTVTKUbd26lWXL\nllFeXr7f8ycrK6vn3GlqaiIzM3O/+5uamnC5XP3u39+5CfS5f8/HluGrvr6eyspK7rjjjl7bdb7J\nYNg9Z+K5557jwQcfZM2aNQSDQW644QadcxJ1LpeLX/7yl7zwwgtMmTKFKVOmUF1dze23367zTQbV\nUD6/+nvs/ozIcAZgtLa2DNDGjRu5/PLLueqqq3quaBzo/Dmc82swf7YMXT/5yU+YO3cu48eP32ef\nzjeJtt3/rt/4xjcoLCwkJyeHG264gaqqKsLhsM45iapAIMCCBQv48pe/zPr163n55ZcpKCjgxhtv\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ff681557310>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(14, 6))\n",
    "plt.title(\"Bayesian Network Structure Learning Time\", fontsize=16)\n",
    "plt.xlabel(\"Number of Samples\", fontsize=14)\n",
    "plt.ylabel(\"Time (s)\", fontsize=14)\n",
    "plt.plot(x, libpgm_time, c='c', label=\"libpgm\")\n",
    "plt.plot(x, pomegranate_time, c='m', label=\"pomegranate exact\")\n",
    "plt.plot(x, pomegranate_cl_time, c='r', label=\"pomegranate chow liu\")\n",
    "plt.legend(loc=2, fontsize=14)\n",
    "plt.xticks(fontsize=14)\n",
    "plt.yticks(fontsize=14)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It looks like when fitting for the same number of variables that pomegranate is able to scale much better than libpgm is. This could mean that for large datasets, pomegranate is much faster than libpgm even though it has a worse theoretical notation.\n",
    "\n",
    "However, it's also important to note that this isn't exactly a fair comparison because they are two different algorithms. libpgm is implementing the constraint based structure learning algorithm which is quadratic in time, and pomegranate is using an exact structure learning algorithm which is exponential in time. However, this benchmark should lay out some practical speed differences when deciding which package to use."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
